package com.example.chapter06.database;

import android.content.Context;

import androidx.room.Database;
import androidx.room.Room;
import androidx.room.RoomDatabase;

import com.example.chapter06.dao.CartDao;
import com.example.chapter06.entity.CartInfo;

//entities表示该数据库有哪些表，version表示数据库的版本号
//exportSchema表示是否导出数据库信息的json串，建议设为false，若设为true还需指定json文件的保存路径
@Database(entities = {CartInfo.class},version = 1, exportSchema = false)
public abstract class CartDatabase extends RoomDatabase {
    // 获取该数据库中某张表的持久化对象
    public abstract CartDao cartDao();
    private static CartDatabase INSTANCE;

    // 单例模式，返回内存数据库实例
    public static CartDatabase getDatabase(Context context) {
        if (INSTANCE == null) {
            synchronized (CartDatabase.class) {
                if (INSTANCE == null) {
                    // 使用 Room 的 inMemoryDatabaseBuilder 来构建内存数据库
                    INSTANCE = Room.inMemoryDatabaseBuilder(context.getApplicationContext(), CartDatabase.class)
                            .allowMainThreadQueries()  // 如果需要在主线程操作数据库，可以打开这个
                            .build();
                }
            }
        }
        return INSTANCE;
    }
}
